// 环境配置文件
// 根据实际部署环境修改以下配置

export const ENVIRONMENT_CONFIG = {
  // 当前环境 (development | production | test)
  // 可以通过以下方式之一设置环境：
  // 1. 手动设置：NODE_ENV: 'development' 或 'production'
  // 2. 自动检测：NODE_ENV: 'auto' (根据域名或其他条件自动判断)
  NODE_ENV: 'auto',  // 自动检测环境
  
  // 开发环境配置
  development: {
    // 数据库 Schema
    SCHEMA_NAME: 'amsedb',
    
    // 数据表配置
    TABLES: {
      INDICATOR_TABLE: 'audit_index_total'
    },
    
    // 默认查询条件
    DEFAULT_CONDITIONS: {
      DEFAULT_ORG_NO: '00000',
      DEFAULT_LIMIT: 12
    },
    
    // 数据格式配置 (统一格式)
    DATA_FORMAT: {
      // 统一数据格式：[日期, 指标名称, 机构号, 指标值, 表名]
      TYPE: 'unified',
      VALUE_INDEX: 3,  // 指标值在数组中的索引位置
      DATE_INDEX: 0,   // 日期在数组中的索引位置
      NAME_INDEX: 1,   // 指标名称在数组中的索引位置
      ORG_INDEX: 2,    // 机构号在数组中的索引位置
      TABLE_INDEX: 4   // 表名在数组中的索引位置
    },
    
    // API 配置
    API: {
      REQUEST_PARAMS: {
        action: 'exesql',
        jdbcName: 'amsedb',
        enc: 'true',
        pageSize: '100',
        isSys: 'false'
      }
    }
  },
  
  // 生产环境配置
  // 在生产环境中修改以下配置
  production: {
    // 数据库 Schema (根据生产环境实际情况修改)
    SCHEMA_NAME: 'amsedb',
    
    // 数据表配置 (根据生产环境实际表名修改)
    TABLES: {
      INDICATOR_TABLE: 'audit_index_total'
    },
    
    // 默认查询条件
    DEFAULT_CONDITIONS: {
      DEFAULT_ORG_NO: '00000',
      DEFAULT_LIMIT: 12
    },
    
    // 数据格式配置 (统一格式)
    DATA_FORMAT: {
      // 统一数据格式：[日期, 指标名称, 机构号, 指标值, 表名]
      TYPE: 'unified',
      VALUE_INDEX: 3,  // 指标值在数组中的索引位置
      DATE_INDEX: 0,   // 日期在数组中的索引位置
      NAME_INDEX: 1,   // 指标名称在数组中的索引位置
      ORG_INDEX: 2,    // 机构号在数组中的索引位置
      TABLE_INDEX: 4   // 表名在数组中的索引位置
    },
    
    // API 配置 (根据生产环境实际情况修改)
    API: {
      REQUEST_PARAMS: {
        action: 'exesql',
        jdbcName: 'amsedb',
        enc: 'true',
        pageSize: '100',
        isSys: 'false'
      }
    }
  }
}

// 自动检测环境的函数
const detectEnvironment = () => {
  // 检测方式1：根据域名判断
  if (typeof window !== 'undefined') {
    const hostname = window.location.hostname
    
    // 生产环境域名特征（可以根据实际情况修改）
    if (hostname.includes('prod') || 
        hostname.includes('www') || 
        !hostname.includes('localhost') && !hostname.includes('127.0.0.1') && !hostname.includes('dev')) {
      return 'production'
    }
  }
  
  // 检测方式2：根据Vite环境变量
  if (typeof import.meta !== 'undefined' && import.meta.env) {
    if (import.meta.env.PROD) {
      return 'production'
    }
    if (import.meta.env.DEV) {
      return 'development'
    }
  }
  
  // 检测方式3：根据Node.js环境变量
  if (typeof process !== 'undefined' && process.env) {
    return process.env.NODE_ENV || 'development'
  }
  
  // 默认为开发环境
  return 'development'
}

// 缓存环境配置，避免重复检测和打印
let cachedConfig = null
let hasLogged = false

// 获取当前环境配置
export const getCurrentConfig = () => {
  // 如果已经缓存过，直接返回
  if (cachedConfig) {
    return cachedConfig
  }
  
  let currentEnv = ENVIRONMENT_CONFIG.NODE_ENV
  
  // 如果设置为自动检测，则执行检测逻辑
  if (currentEnv === 'auto') {
    currentEnv = detectEnvironment()
    if (!hasLogged) {
      console.log('🔍 自动检测到环境:', currentEnv)
      hasLogged = true
    }
  } else {
    if (!hasLogged) {
      console.log('📋 使用手动设置的环境:', currentEnv)
      hasLogged = true
    }
  }
  
  // 缓存配置
  cachedConfig = ENVIRONMENT_CONFIG[currentEnv] || ENVIRONMENT_CONFIG.development
  return cachedConfig
}
